// 考虑不会发生“越狱”的情况
// 第一个位置有 m 个选择
// 第二个位置有 (m-1) 个选择
// 以后每个位置都有 (m-1) 个选择
// 所以不会“越狱”有 m*(m-1)^(n-1) 种情况
// 一共会有 m^n 种情况
// 答案要求会“越狱”的情况，即 m^n - m*(m-1)^(n-1)

#include <iostream>
using namespace std;
typedef long long ll;
const int MOD = 100003;
ll qexp(ll base, ll power) {
  if (power == 0) return 1;
  ll half = qexp(base, power / 2);
  ll ans = (half * half) % MOD;
  if (power & 1) ans = (ans * base) % MOD;
  return ans;
}

int main() {
  ll m, n;
  cin >> m >> n;
  cout << (qexp(m, n) - m * qexp(m - 1, n - 1) % MOD + MOD) % MOD << endl;
}
